﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Ling.P2P.Provider
{
    /// <summary>
    /// 表示P2P网路消息类型的常量集。
    /// </summary>
    public static class P2PConstants
    {
        /**********************************************************************************************
         * 【巽翎君】
         * 该类中定义的常量如有不够用的情况，可自行补充。
         * 但请不要删除下面这些已定义的常，以免 P2P 内裤无法正常工作。 
         **********************************************************************************************/
        public const byte HEADER_IS_MSG = 0x1; // 这两个常量在 P2PEntry 内部使用。调用此类库时不需要理会。
        public const byte HEADER_NO_MSG = 0x0;

        public const uint MSG_LOG_IN = 0x0; // 表示客户端登入消息。
        public const uint MSG_LOG_OUT = 0x1; // 表示客户端登出消息。
        public const uint MSG_MAINTAIN_LOGIN = 0xF; // 表示客户端的状态维护消息。

        public const uint MSG_LOG_OK = 0x2; // 表示登入成功的消息。
        public const uint MSG_LOG_FAIL = 0x3; // 表示登入失败的消息。

        public const uint MSG_SEND_TEXT = 0x4; // 表示发送文件消息。
        public const uint MSG_SEND_IMG = 0x5; // 表示发送除文本及文件以外的其它二进制数据的消息。
        public const uint MSG_SEND_FILE = 0x6; // 表示发送文件的消息。

        public const uint MSG_UPDATE_CLIENTS = 0xA; // 表示通知客户端更新与登入客户端列表的消息。

        public const int SEND_ACCEPT = 0x1; // 表示接受（非消息常量，用于在文件传输的过程中或其它用得着的情况）。
        public const int SEND_REFUSE = 0x5; // 表示拒绝（非消息常量，用于在文件传输的过程中或其它用得着的情况）。
        public const int SEND_SUCCESS = 0x0; // 状态量常，表示成功。
        public const int SEND_FAIL = 0x4; // 状态量常，表示失败。
    }

    /// <summary>
    /// 用于表示 P2PEntry 类型的枚举类型。
    /// </summary>
    public enum P2PEntryType
    { 
        /// <summary>
        /// 表示 P2PEntry 类型未知。
        /// </summary>
        Unknown = 0x0,
        /// <summary>
        /// 表示服务端 P2PEntry
        /// </summary>
        P2PServer = 0x1,
        /// <summary>
        /// 表示客端 P2PEntry
        /// </summary>
        P2PClient = 0x2
    }
}
